Software, such as an application program like Microsoft® Money, is often viewed as monolithic in the sense that an entire application program functions as a unified whole. At a number of levels within the vertical architecture of such an application program, code has been written to do a particular type of calculation or task, such as formulating a budget report that compares a list of budgeted amounts to a user's transactional spending for the last month, generating a cash-flow forecast into the future, and the like.
Conventionally, it has not been possible to efficiently and easily retrieve bits and pieces of such an application program's stored data. The advent of the World Wide Web has made the ability to retrieve data selectively from an application program even more attractive from a usability standpoint. The ability to obtain and collect information from different places and bring together just what is relevant for the user is a desirable functionality for software.
The architecture of many application programs, such as Microsoft® Money, may be such that each component responsible for doing budgeting or cash-flow etc. may have been written in a very particular way to accomplish each particular task.
It would be desirable to impose on an application program's code base a fairly easy, and fairly extensible, way to uniformly permit some other entity, be it a Web page, or a plug-in to Internet Explorer (IE), or a background process that runs on a server, to communicate with specific components within that code base without the other entity needing to have a thorough understanding of the application program's internals. In this way, the development and test costs of writing to individual different Application Programming Interfaces (APIs) within the application program may be avoided.
Software developers that are sometimes referred to as “vertical tool providers” often want to build add-ons to popular software products. A system in which a simple API can be constructed for querying a local data store beneath a desktop application, such as Microsoft® Money, would be desirable. An API of this type may advantageously provide a fundamental data interchange mechanism for accessing a local data store.
Accordingly, a pluggable data source software component, or region of code, which can be arbitrarily selected, that implements a pluggable data source interface and participates in a uniform query system, thereby absolving an entity issuing a query from needing to know implementation details of the data source software component, or region of code, beyond what is necessary for interfacing with a centralized query broker, also referred to herein as an information server, would be desirable.